SpringCloud 入门笔记(三)Feign声明式HTTP调用

概述

在SpringCloud中,每个微服务即是服务提供者也是服务消费者,各个微服务之间经常需要互相调用。通常,服务会向外部提供一些REST接口,供外部服务调用,Feign就是提供服务间声明式HTTP调用的组件。通过Feign,我们可以使用SpringMVC注解创建访问其他服务接口的HTTP客户端。

本篇以 user-ms 和 role-ms 微服务为例,配置Feign组件。

配置Feign组件

在pom.xml中添加如下依赖:

1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在启动类添加@EnableFeignClients注解,如下:

1
2
3
4
5
6
7
8
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class UserMsApplication {
public static void main(String[] args) {
SpringApplication.run(UserMsApplication.class, args);
}
}

在user-ms中创建一个FeignClient接口,作为Feign客户端,通过SpringMVC注解访问role-ms微服务,如下所示:

1
2
3
4
5
6
7
@FeignClient(name = "role-ms")
public interface RoleFeignClient {

@RequestMapping(value = {"/roles"}, method = RequestMethod.GET)
Object findRoleList();

}

在UserController中定义访问role-ms的接口,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@RestController
public class UserController {
@Autowired
private UserService userService;
@Autowired
private RoleFeignClient roleFeignClient;

@RequestMapping("/users")
public Object users() {
return userService.findUserList();
}

@RequestMapping("/roles")
public Object roles() {
return roleFeignClient.findRoleList();
}

}

这样,我们访问user-ms的/roles接口就可以获取到role-ms提供的数据了。

源码地址:https://github.com/GreedyStar/spring-cloud-demo

最后的最后,安利一下自己写的一个Java代码生成工具,能够方便的生成Spring、SpringMVC、Mybatis架构下的Java代码,希望能对大家有所帮助,地址:Java代码生成器:Generator